When a processor such as, for example, a processor in a conventional personal computer, is powered up, the processor executes a reset vector, which points the processor to firmware code stored in a boot block of a memory (e.g., a portion of a flash memory). The instructions in the boot block impart functionality to the processor and inform the processor of the location of further firmware instructions in memory to be executed by the processor.
As support for the processor evolves, the firmware stored in the memory may be updated to provide the processor enhanced functionality or to instruct the processor to interface with new devices. Firmware updates typically consist of overwriting the existing firmware in the memory with a new set of firmware instructions. Additionally, in the case of corrupt firmware in memory, the corrupt firmware may be restored to its prior, uncorrupt state. When the firmware is updated or sorted, however, the boot block (e.g., the portion of memory providing the system, which includes the processor, with its most base system initialization) is not updated. The boot block is not altered because it is so fundamental to system operation that corruption of the boot block could render the system useless until a new component having an uncorrupted boot block is placed in communication with the processor.
Historically, firmware updates or restores were carried out by reading firmware instructions from a conventional diskette (e.g., a three and one-half inch, 1.44 megabyte (MB) diskette) and writing the information from the diskette to the memory containing the firmware. This was possible even in situations in which the firmware was corrupt because the boot block included instructions informing the processor of how to interface with a drive in which the diskette was placed. However, as the number and complexity of firmware instructions has increased, the storage requirements of media on which the firmware instructions may be stored have grown. For example, while, historically, firmware instructions could be carried on a single 1.44 MB diskette, the size of the firmware instructions now eclipse the 1.44 MB, thereby requiring several diskettes onto which replacement firmware is written. However, because the firmware is the very instruction set that gives the processor the ability to manage input and output from media, it is difficult or impossible to read from multiple diskettes during a firmware restore or upgrade.
In addition to including instructions for the processor to access a drive in which a diskette is placed, the boot block also includes instructions that enable a processor to access a particular location of an optical disk when such a media is inserted into an optical drive prior to processor power-up. The accessibility of optical media by the processor via the boot block, coupled with the ever-increasing information capacity of optical media, has made optical disks the media of choice for restoring or updating firmware.
While the desirability of restoring or updating firmware from optical media can be readily appreciated, there is presently a proliferation of formats or standards in which information may be written to optical media, some such formats or standards are proprietary. Many of these information formats are not readable by a processor in a pre-boot state due to limited firmware size and due to the fact that many new standards or formats may emerge during a firmware lifecycle. For example, in a pre-boot environment, today most firmware instructs processors only to handle information formatted in an information standards organization (ISO) 9660 format. Images of any one of various different optical media formats may be placed on ISO 9660 formatted media. However, the processor in a pre-boot environment will be unable to read the information in these images. Accordingly, a processor is unable to boot from optical media formatted in any format other than ISO 9660 or any other format supported by the firmware.